package com.gjy.ai;

/**
 * @author 宫静雨
 * @version 1.0
 * @since 2023-11-04 11:18:50
 */
public class T1 {

    /*
给定一个包含大写字母和小写字母的字符串 s ，返回 通过这些字母构造成的 最长的回文串 。
在构造过程中，请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。
 */
    public static void main(String[] args) {
        String s = "abccccdd";
        System.out.println(longestPalindrome(s));
    }

    public static Integer ccc(String s) {
        int[] count = new int[128];
        int length = s.length();
        for (int i = 0; i < length; i++) {
            count[s.charAt(i)]++;
        }
        int res = 0;
        for (int v : count) {
            res += v / 2 * 2;
            if (v % 2 == 1 && res % 2 == 0) {
                res++;
            }
        }
        return res;
    }

    public static String longestPalindrome(String s) {
        int n = s.length();
        int maxLen = 0;
        String res = "";
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j <= n; j++) {
                String sub = s.substring(i, j);
                if (sub.length() > maxLen && isPalindrome(sub)) {
                    maxLen = sub.length();
                    res = sub;
                }
            }
        }
        return res;
    }

    public static boolean isPalindrome(String s) {
        int n = s.length();
        for (int i = 0; i < n / 2; i++) {
            if (s.charAt(i) != s.charAt(n - i - 1)) {
                return false;
            }
        }
        return true;
    }

}
